package ioc

import "github.com/gin-gonic/gin"

// ioc注册表
type IocContainer struct {
	store map[string]IocObject 
}

// 对象注册
func (i *IocContainer) RegistryIoc(obj IocObject) {
	i.store[obj.Name()] = obj 

}


// 获取对象
func (i  *IocContainer) Get(name string) IocObject {
	return i.store[name]
}

// 所有对象初始化
func (i  *IocContainer)  Init()  {
	for _, v := range i.store {
		v.Init()
	}
}

// 用于类型断言的接口
type IocApiHandler interface {
	Registry(r gin.IRouter)
}

// apihandler路由注册
func (i *IocContainer) RegistryRouter(r gin.IRouter) {
	for _, v := range i.store {
		if s,ok := v.(IocApiHandler);ok {
			s.Registry(r)
		}
	}
}